package com.ylin.coder.utils;

import org.apache.log4j.Logger;

import java.io.File;
public class Tools {
	public static Logger logger = Logger.getLogger(Tools.class);

	/*
	 * 获取classpath2 E:/%e5%b7%a5%e4%bd%9c/Java/workspace/dyc/WebRoot/WEB-INF/classes/
	 */
	public static String getClassResources() {
		String path = (String.valueOf(Thread.currentThread().getContextClassLoader().getResource(""))).replaceAll("file:/", "").replaceAll("%20", " ").trim();
		if (path.indexOf(":") != 1) {
			path = File.separator + path;
		}
		return path;
	}

	/**
	 * 是否为空
	 * @Auther: masl 2017年5月20日上午11:08:03
	 * @param str
	 */
	public static boolean isEmpty(String str) {
		if (str == null || str.trim().length() == 0) {
			return true;
		}
		return false;
	}

	/**
	 * 是否不为空
	 * @Auther: masl 2017年5月20日上午11:08:03
	 * @param str
	 */
	public static boolean isNotEmpty(String str) {
		return !isEmpty(str);
	}

	/**
	 * 小驼峰命名法
	 * @Auther: masl 2017年5月20日上午10:00:07
	 * @param str
	 */
	public static String littleHump(String str) {
		String tmp = "";
		if (str.indexOf("_") > 0) {
			int f = 0;
			for (String item : str.split("_")) {
				if (f == 0) {
					f = 1;
					tmp += item;
					continue;
				}
				char ch[] = item.toCharArray();
				if (ch[0] >= 'a' && ch[0] <= 'z')
					ch[0] = (char) (ch[0] - 32);

				tmp += new String(ch);
			}
		} else {
			return str.substring(0, 1).toLowerCase() + str.substring(1);
		}
		return tmp;
	}

	/**
	 * 大驼峰命名法
	 * @Auther: masl 2017年5月20日上午10:00:22
	 * @param str
	 */
	public static String bigHump(String str) {
		String tmp = "";
		if (str.indexOf("_") > 0) {
			for (String item : str.split("_")) {
				char ch[] = item.toCharArray();
				if (ch[0] >= 'a' && ch[0] <= 'z')
					ch[0] = (char) (ch[0] - 32);

				tmp += new String(ch);
			}
		} else {
			return str.substring(0, 1).toUpperCase() + str.substring(1);
		}
		return tmp;
	}

	/**
	 * 数据库类型转换
	 * @Auther: masl 2017年5月20日上午10:00:30
	 * @param sqlType
	 */
	public static String sqlType2Java(String sqlType) {
		sqlType = sqlType.toLowerCase();

		switch (sqlType) {
		case "bit":
			return "Boolean";
		case "tinyint":
		case "smallint":
		case "smallint unsigned":
		case "int":
			return "Integer";
		case "bigint":
		case "bigint unsigned":
			return "Long";
		case "float":
			return "Float";
		case "decimal":
		case "numeric":
		case "real":
		case "money":
		case "smallmoney":
			return "Double";
		case "varchar":
		case "char":
		case "nvarchar":
		case "nchar":
			return "String";
		case "datetime":
			return "Date";
		case "image":
			return "Blob";
		case "text":
		case "ntext":
		case "longtext":
			return "String";
		default:
			return sqlType;
		}
	}
}
